package com.xinqi.modules.course.clazz.dto.rsp;


import com.xinqi.common.base.enums.YesNoEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * 班级分组表-响应对象
 *
 * @author: system
 * @date: 2023/01/17
 */
@Data
@Schema(description = "班级分组表-响应")
public class ClassGroupResultDTO implements Serializable {
    /**
     * 班级成员分组id
     */
    private Long id;
    /**
     * 创建者
     */
    private Long createBy;
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    /**
     * 课程id
     */
    private Long courseId;
    /**
     * 班级id
     */
    private Long classId;
    /**
     * 父分组id，默认为0
     */
    private Long pid;
    /**
     * 分组名称
     */
    private String name;
    /**
     * FREEDOM("FREEDOM", "学生自由分组"),SPECIFIED("SPECIFIED", "老师指定分组"), RANDOM("RANDOM", "系统随机分组");
     */
    private String type;
    /**
     * 每组人数
     */
    private Integer memberNum;
    /**
     * 最大组数
     */
    private Integer maxGroupNum;
    /**
     * 分组数
     */
    private Integer groupNum;
    /**
     * 截止时间
     */
    private Long lastTime;
    /**
     * 自由分组学生的约定数字
     */
    private String number;
    /**
     * 分组规则
     */
    private String rule;

    /**
     * 口令
     */
    private String sign;

    /**
     * 当前登录人是否在此分组内，1-是，0-否
     */
    private Integer joinedStatus = YesNoEnum.NO.ordinal();

    /**
     * 加入的小组的名称，一个大组下一个学员只能加入一个小组
     */
    private String joinedName;

    /**
     * 班级总人数
     */
    private Integer total;

    /**
     * 已进组人数
     */
    private Integer insideCount = 0;

    /**
     * 未进组人数
     */
    private Integer outsideCount = 0;

    /**
     * 已进组学生列表
     */
    private List<ClassGroupStudentResultDTO> studentList = new ArrayList<>();

    /**
     * 子节点
     */
    private List<ClassGroupResultDTO> children = new ArrayList<>();

}
